/*
 * Copyright © 2021 http://www.hn-szzy.com/ All rights reserved.
 */
package com.xjh.basestudy.javabase.thread.synctype;

/**
 * @author： 徐建华
 * @date： 2022/1/16
 * @description：
 */

public class TestNoSync implements Runnable {
    static TestNoSync instance = new TestNoSync();
    static int i = 0;

    @Override
    public void run() {
        for (int j = 0; j < 100000; j++) {
            i++;
        }
    }

    // 开启两个线程 公用同一个instance实例
    /*
     * 程序理解：如果只有一个线程，i会稳定输出100000（数要够大才有效果）
     * 但是当写了两个线程时,i不会稳定输出二十万，而是一个介于十万到二十万之间的数，也就是说一些i没有加上
     * */
    public static void main(String[] args) throws InterruptedException {
        // 创建两个线程并传入实例对象
        Thread t1 = new Thread(instance);
        Thread t2 = new Thread(instance);
        //执行线程
        t1.start();
        t2.start();
        // 让t1和t2线程执行完后再输出i
        t1.join();
        t2.join();
        System.out.println(i);
        //或者等一会儿（等500毫秒t1和t2就执行完了，再输出i）
        //Thread.sleep(500);
        //System.out.println("i=="+i);
    }
}
